package com.sjz.myfrist;


import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;

/***
 *  通知1
 */
public class NotificationActivity extends AppCompatActivity {

    NotificationManager manager;
    Notification notification;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.notification1);

        //连接原Activity和跳转Activity
        Intent intent = new Intent(this, NotificationActivity.class);//this是本Activity，NotiFicationActicity是跳转Activity
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);

        //第一步：创建通知管理器 NotificationManager
        manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        //第二步：使用NotificationCompat的Builder构造器的build()方法来创建Notification通知对象
        //Builder(Context context,String channelId)
        //context:上下文
        //channelId:通知渠道id
        notification = new NotificationCompat.Builder(this,"channel1")
                //链式结构，设置notification属性
                .setContentTitle("官方通知")//设置通知标题
                .setContentText("世界那么大，我想去看看")//设置通知文本内容
                .setSmallIcon(R.mipmap.ic_launcher)//设置通知小图标，图标不能有颜色，不能是RGB图片
                .setColor(Color.parseColor("#FF0000"))//设置小图标颜色
                .setLargeIcon(BitmapFactory.decodeResource(getResources(),
                        R.mipmap.ic_launcher))//设置大图标，所以可以有颜色，但是要通过BitmapFactory转换成Bitmap类型
                .setContentIntent(pendingIntent)//设置通知后的跳转意图,需要一个PendingIntent对象
                .setAutoCancel(true)//点击通知后是否自动清除通知
                .build();

        //创建通知渠道，注意通知渠道是8.0后引入的，所以必须判断版本是否为8.0以上
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
            //NotificationChannel(String id, CharSequence name, int importance)
            //id:通知渠道id
            //name:用户可见的通知名称
            //importance：通知的重要程度
            //IMPORTANCE_NONE 关闭通知
            //IMPORTANCE_MIN 开启通知，不会弹出，无提示音，状态栏中不显示
            //IMPORTANCE_LOW 开启通知，不会弹出，无提示音，状态栏中显示
            //IMPORTANCE_DEFAULT 开启通知，不会弹出，发出提示音，状态栏中显示
            //IMPORTANCE_HIGH 开启通知，会弹出，发出提示音，状态栏中显示
            NotificationChannel notificationChannel = new NotificationChannel("channel1", "测试通知", NotificationManager.IMPORTANCE_HIGH);
            //通知渠道加载到通知管理器
            manager.createNotificationChannel(notificationChannel);
        }

        //点击触发通知
        Button sendNotice = (Button) findViewById(R.id.send_notice);
        sendNotice.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //通过通知管理器对象manager发送通知notification,通知的id是1
                manager.notify(1,notification);
            }
        });
         //点击关闭通知
        Button close_send_notice=(Button) findViewById(R.id.close_send_notice);
        close_send_notice.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //关闭id为1的通知
                manager.cancel(1);
            }
        });

    }

}